package com.koo.modules.product.entity;

import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.koo.common.base.entity.CommonEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import java.math.BigDecimal;
import java.util.Date;

/**
 * @author charlin
 * @email 136137465@qq.com
 * @date 2023-01-13 09:43:31
 */
@Data
@ApiModel("")
@TableName("product_stock")
public class ProductStockEntity extends CommonEntity {
    private static final long serialVersionUID = 1L;

    @ExcelIgnore
    @TableId
    private Long stockId;

    @ColumnWidth(11)
    @ExcelProperty("产品Id")
    @ApiModelProperty(value = "产品Id")
    private Long productId;

    @ColumnWidth(11)
    @ExcelProperty("产品编号")
    @ApiModelProperty(value = "产品编号")
    private String productCode;

    @ColumnWidth(11)
    @ExcelProperty("产品名称")
    @ApiModelProperty(value = "产品名称")
    private String productName;

    @ColumnWidth(11)
    @ExcelProperty("仓库id")
    @ApiModelProperty(value = "仓库id")
    private Long wareId;

    @ColumnWidth(11)
    @ExcelProperty("类别id")
    @ApiModelProperty(value = "类别id")
    private Long categoryId;

    @ColumnWidth(11)
    @ExcelProperty("类别名称")
    @ApiModelProperty(value = "类别名称")
    private String categoryName;

    @ColumnWidth(11)
    @ExcelProperty("通用名")
    @ApiModelProperty(value = "通用名")
    private String genericName;

    @ColumnWidth(11)
    @ExcelProperty("产品区域")
    @ApiModelProperty(value = "产品区域")
    private String producingArea;

    @ColumnWidth(11)
    @ExcelProperty("供应商id")
    @ApiModelProperty(value = "供应商id")
    private Long supplierId;

    @ColumnWidth(11)
    @ExcelProperty("供应商名称")
    @ApiModelProperty(value = "供应商名称")
    private String supplierName;

    @ColumnWidth(11)
    @ExcelProperty("供应商联系方式")
    @ApiModelProperty(value = "供应商联系方式")
    private String supplierMobile;

    @ColumnWidth(11)
    @ExcelProperty("规格")
    @ApiModelProperty(value = "规格")
    private String standard;

    @ColumnWidth(11)
    @ExcelProperty("单位")
    @ApiModelProperty(value = "单位")
    private String unit;

    @ColumnWidth(11)
    @ExcelProperty("助记名")
    @ApiModelProperty(value = "助记名")
    private String pinyin;

    @ColumnWidth(11)
    @ExcelProperty("批号")
    @ApiModelProperty(value = "批号")
    private String batchNo;

    @ColumnWidth(11)
    @ExcelProperty("采购批次号")
    @ApiModelProperty(value = "采购批次号")
    private String lotNo;

    @ColumnWidth(11)
    @ExcelProperty("入库号")
    @ApiModelProperty(value = "入库号")
    private String inboundNo;

    @ColumnWidth(11)
    @ExcelProperty("入库Id")
    @ApiModelProperty(value = "入库Id")
    private Long inboundId;

    @ColumnWidth(11)
    @ExcelProperty("收货单Id")
    @ApiModelProperty(value = "收货单Id")
    private Long receiveId;

    @ColumnWidth(11)
    @ExcelProperty("收货单号")
    @ApiModelProperty(value = "收货单号")
    private String receiveNo;

    @ColumnWidth(11)
    @ExcelProperty("采购订单号")
    @ApiModelProperty(value = "采购订单号")
    private String orderNo;

    @ColumnWidth(11)
    @ExcelProperty("供应商配送单号")
    @ApiModelProperty(value = "供应商配送单号")
    private Integer supplierDeliveryNo;

    @ColumnWidth(11)
    @ExcelProperty("采购发票号")
    @ApiModelProperty(value = "采购发票号")
    private String purchaseInvoiceNo;

    @ColumnWidth(11)
    @ExcelProperty("采购发票编码")
    @ApiModelProperty(value = "采购发票编码")
    private String purchaseInvoiceCode;

    @ColumnWidth(11)
    @ExcelProperty("库存")
    @ApiModelProperty(value = "库存")
    private Long stockNum;

    @ColumnWidth(11)
    @ExcelProperty("采购数量")
    @ApiModelProperty(value = "采购数量")
    private Long purchaseNum;

    @ColumnWidth(11)
    @ExcelProperty("采购退货数量")
    @ApiModelProperty(value = "采购退货数量")
    private Long returnNum;

    @ColumnWidth(11)
    @ExcelProperty("拆零数量")
    @ApiModelProperty(value = "拆零数量")
    private Long splitNum;

    @ColumnWidth(11)
    @ExcelProperty("销售数量")
    @ApiModelProperty(value = "销售数量")
    private Long saleNum;

    @ColumnWidth(11)
    @ExcelProperty("盘盈数量")
    @ApiModelProperty(value = "盘盈数量")
    private Long checkInNum;

    @ColumnWidth(11)
    @ExcelProperty("盘亏数量")
    @ApiModelProperty(value = "盘亏数量")
    private Long checkOutNum;

    @ColumnWidth(11)
    @ExcelProperty("销毁数量")
    @ApiModelProperty(value = "销毁数量")
    private Long destroyNum;

    @ColumnWidth(11)
    @ExcelProperty("采购价")
    @ApiModelProperty(value = "采购价")
    private BigDecimal purchasePrice;

    @ColumnWidth(11)
    @ExcelProperty("指导零售价")
    @ApiModelProperty(value = "指导零售价")
    private BigDecimal retailPrice;

    @ColumnWidth(11)
    @ExcelProperty("售价")
    @ApiModelProperty(value = "售价")
    private BigDecimal salePrice;

    @ColumnWidth(11)
    @ExcelProperty("会员价")
    @ApiModelProperty(value = "会员价")
    private BigDecimal memberPrice;

    @ColumnWidth(11)
    @ExcelProperty("条码")
    @ApiModelProperty(value = "条码")
    private String barCode;

    @ColumnWidth(11)
    @ExcelProperty("是否医保1是")
    @ApiModelProperty(value = "是否医保1是")
    private Integer isYiBao;

    @ColumnWidth(11)
    @ExcelProperty("是否处方药1是")
    @ApiModelProperty(value = "是否处方药1是")
    private Integer isRxDrug;

    @ColumnWidth(11)
    @ExcelProperty("是否拆零药1是")
    @ApiModelProperty(value = "是否拆零药1是")
    private Integer isSplit;

    @ColumnWidth(11)
    @ExcelProperty("是否积分1是")
    @ApiModelProperty(value = "是否积分1是")
    private Integer isScore;

    @ColumnWidth(11)
    @ExcelProperty("是否折扣1是")
    @ApiModelProperty(value = "是否折扣1是")
    private Integer isDiscount;

    @ColumnWidth(11)
    @ExcelProperty("是否赠品1是")
    @ApiModelProperty(value = "是否赠品1是")
    private Integer isGift;

    @ColumnWidth(11)
    @ExcelProperty("是否首营1是")
    @ApiModelProperty(value = "是否首营1是")
    private Integer isFirstSale;

    @ColumnWidth(11)
    @ExcelProperty("批准文号")
    @ApiModelProperty(value = "批准文号")
    private String approvalNo;

    @ColumnWidth(11)
    @ExcelProperty("厂家")
    @ApiModelProperty(value = "厂家")
    private String produceFactory;

    @ColumnWidth(11)
    @ExcelProperty("剂型")
    @ApiModelProperty(value = "剂型")
    private String dosageForm;

    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @ColumnWidth(11)
    @ExcelProperty("有效期")
    @ApiModelProperty(value = "有效期")
    private Date expiryDate;

    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @ColumnWidth(11)
    @ExcelProperty("生产日期")
    @ApiModelProperty(value = "生产日期")
    private Date produceDate;

    @ColumnWidth(11)
    @ExcelProperty("是否医保")
    @ApiModelProperty(value = "是否医保")
    private Integer isMedicare;

    @ColumnWidth(11)
    @ExcelProperty("是否中药")
    @ApiModelProperty(value = "是否中药")
    private Integer isDrug;

    @ColumnWidth(11)
    @ExcelProperty("是否gmp药")
    @ApiModelProperty(value = "是否gmp药")
    private Integer isGmp;

    @ColumnWidth(11)
    @ExcelProperty("效果")
    @ApiModelProperty(value = "效果")
    private String effect;

    @ColumnWidth(11)
    @ExcelProperty("品牌id")
    @ApiModelProperty(value = "品牌id")
    private Long brandId;

    @ColumnWidth(11)
    @ExcelProperty("品牌名称")
    @ApiModelProperty(value = "品牌名称")
    private String brandName;

    @ColumnWidth(11)
    @ExcelProperty("是否提成 1是")
    @ApiModelProperty(value = "是否提成 1是")
    private Integer isCommission;

    @ColumnWidth(11)
    @ExcelProperty("提成比例")
    @ApiModelProperty(value = "提成比例")
    private Integer commissionRatio;

    @ColumnWidth(11)
    @ExcelProperty("经办人(入库审批人)")
    @ApiModelProperty(value = "经办人(入库审批人)")
    private String operatorName;

    @ColumnWidth(11)
    @ExcelProperty("仓库名称")
    @ApiModelProperty(value = "仓库名称")
    @TableField(exist = false)
    private String wareName;
}
